23

» WarCraft 3 / Рыцари

Похожие вопросы:

ответ
Да, реально. Для этого тебе понадобится сделать три вещи:
  1. Создать улучшение на основе улучшения для Headhunter.
  2. Создать способность на основе способности "Безумие" (именно она и изменяет Headhunter'а). Я имею в виду ту способность, в которой в данных нужно указать "тип войск".
  3. Добавить обоим юнитам эту способность. Также посмотри, чтобы в параметре "взаимосвязь эквивалентов" у твоего "рыцаря" стоял "паладин".
ответ
XGM Bot:
Похожие вопросы:

ответ
Q/A не для этого. Иди в свой блог.
ответ
Не совсем по теме написал, поэтому советую закрыть вопрос, пока не заминусили и найти стол заказов

ответ
Вроде Эльрат (или nikikin ли? Не помню) занимался конвертом моделей из homm5 в wc3. Попробуй договориться с ним, потому что из пятых героев крайне мало моделек переконвертировано. А из тех, что есть - мало нормальных, полноценно анимированных.
ответ
По картинке кость плаща не найти, всё информацию о названии костей можно найти например через mdlvis
ответ
добавляешь героя в этот список (дополнительно-игровые константы)
также, в инициализации карты должно быть это действие

23

» WarCraft 3 / Смена контроля юнитов

Похожие вопросы:

ответ
У анрайза вроде было, там был морф на мемхаке чисто без абилок, в его разделе должно быть. Найден ивент урона на предметы и разрушаемые обьекты.

Но без костыльно пока в паблике нету, портрет юнита хранится не в его структуре, нужно менять в бд данные о потртете или патчить прорисовку (что пока не сделал никто), так что тупо морфим да модель меняем.

23

» WarCraft 3 / Эффекты

Похожие вопросы:

ответ
У тебя в модели неправильно прописан путь к стандартной текстуре и ноль геосетов. Вот исправление, пробуй. Не пойдет - добавляй геосеты.
ответ
ledoed, добавь Death анимацию, тоже хоть на 0,1 сек.
ответ
nvc123, Я ее случайно удалил
ответ
FrigatPlay, скорее всего этот

23

» WarCraft 3 / Порталы и Юнит

Похожие вопросы:

ответ
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.

23

» WarCraft 3 / Душа Демона 2 (v1.2)

Ваш ресурс не прошёл автомодерацию. Пожалуйста, внесите исправления или ожидайте проверки модератором.
Причина
Число вставленных изображений: 0, а требуется не менее 3
Your resource has not passed automoderation. Please make corrections or wait for the moderator to check.
Reason
Count of inserted images is: 0, but required not less than 3
// CID3
23

» WarCraft 3 / Условие способность применяется на определеного типа юнита

Похожие вопросы:

ответ
Так Рёв - это способность без конкретной цели.
Можно ловить юнитов в радиусе и проверять у них наличие баффа от способности.

23

» WarCraft 3 / Горючая смесь

Похожие вопросы:

ответ
doleo82, я бы тебе предложил переложить скилл на полностью триггерную основу, тогда можно будет регулировать урон в момент его нанесения, в зависимости от каких-либо условий...
ответ
Тут вся инфа про типы урона и атаки от спелов.

23

» WarCraft 3 / Хеш таблица

Похожие вопросы:

ответ
Скачаю чистый варкрафт 1.26 попробую.
Рекомендую эти торренты.
Русская версия.
Английская версия.
ответ
Сохраняете на хэндл здания группу юнитов и дело в шляпе.
ответ
Black Soul:
ArhiMEN:
Я посмотрел, но возникла проблема. Я тупой и не могу написать также, но моменте добаления юнита в хеш таблицу. Я Save Handle of (Last created unit) as 0 of (а дальше я не нашёл, как добавть "Key(Constructed structure))" in Hash
и соответсвенно любое другое действие, где прописанно Key
Так не нужно ничего самому делать. Я прикрепил к тому сообщению карту. В ней я уже все сделал сам. Тебе осталось только скопировать триггеры оттуда в свою карту и заменить юнитов на тех, которые тебе нужны. Вот та карта:
Bergi_Bear, хеш-таблицы — это проще простого. Они не требуют множество действий для работы. Достаточно только понять принцип.
ответ
Стас Орлов, ну ты же как-то прикрепил группу к строению? Тут тоже самое, только строение к юниту.
call SaveUnitHandle(твой_хеш, GetHandleId(твой_юнит), твоё_число, твоё_строение)
При смерти узнавай строение.
set Host = LoadUnitHandle(твой_хеш, GetHandleId(умерший_юнит), твоё_число)
set Dead = LoadInteger(твой_хеш, GetHandleId(Host), другое_твоё_число)
call SaveInteger(твой_хеш, GetHandleId(Host), другое_твоё_число, Dead + 1)
// Не забываем чистить хеш.
call FlushChildHashtable(твой_хеш, GetHandleId(умерший_юнит))
Через некоторое время создавай новых юнитов.
set Group = LoadGroupHandle(твой_хеш, GetHandleId(твоё_строение), твоё_число_2)
set Dead = LoadInteger(твой_хеш, GetHandleId(твоё_строение), другое_твоё_число)
if Dead > 0 then
    call SaveInteger(твой_хеш, GetHandleId(твоё_строение), другое_твоё_число, 0)
    loop
        set Dead = Dead - 1
        set Unit = CreateUnit(...)
        call GroupAddUnit(Group, Unit)
        call SaveUnitHandle(твой_хеш, GetHandleId(Unit), твоё_число, твоё_строение)
        exitwhen Dead == 0
    endloop
endif
ответ
да, массив постоянно будет делать reAllocMem , если текущий размер окажется мельче, чем номер ячейки. Поэтому, если массив будет часто писаться с инкрементом, то выгоднее сперва прописать в последнее допустимое значение (8191 для 26 патча) типа MyArray[8191]=0
чисто чтобы его по памяти не возили туда-сюда каждые X значений (не смотрел, сколько изначально выделяется)
я вот у себя пофиксил такую же байду с таблицей строк. игра выделяет по 16 ячеек под строки, а у меня в доте они генерируются десятками в секунду. Каждую секунду игра делала ре-аллок памяти, а к середине игры там уже несколько мб таблица туда-сюда ездила. Сделал аллок в разы больше - и таблица всего 2 раза переедет за 40 минут игры максимум. Экономия тактов налицо.
Хеш-таблицы вообще не являются массивами, гугл в помощь, поэтому там об этом думать не стоит. Стоит думать лучше о том, чтобы первичных (родительских) ключей было меньше, чем вторичных, чисто исходя из того, что в этом случае перебор по таблице окажется быстрее

23

» WarCraft 3 / Апгрейд одного юнита до другого

Похожие вопросы:

ответ
отменять постройку юнита если технология уже ап
либо как сразу говорили через ап здания
где каждому твоему зданию будет соответствовать такое же здание но с дополнительным слотом
с продажей юнита открываешь доту и смотришь как там сделан спелл передать предметы у куры
он сделан как раз через продажу юнита
иначе никак
если не нравится пожалуйся богу об этом
или близардам
пусть выпустят новый патч специально для тебя

23

» WarCraft 3 / Syntax Error

Похожие вопросы:

ответ
Ничего не помогло, все та же ошибка, хоть и удалось указать папку с вариком.
ответ
~8gabriel8:
Как бы вообще не понял сути вопроса, но судя по этому комментарию, не получается удалить в РО карты синий объект из кампании. Это нормально, удалять надо в РО редактора кампании.
ответ
Надо mdlvis другой версии 1.39 насколько помню
ответ
у меня тоже так скачай версию 1.05

ответ
Проблема решена.Это было из-за модели. Углубляться в подробности не буду.

23

» WarCraft 3 / Музыкальный список

Похожие вопросы:

ответ
от бж избався
native StopMusic takes boolean fadeOut returns nothing
попробуй

23

» WarCraft 3 / Своя фоновая музыка

Похожие вопросы:

ответ
можно задать постоянную музыку при входе юнита в область.
А выключать её по событию "юнит покидает область".
Они же рядом события эти, чего усложнятьв сё.

23

» WarCraft 3 / Редактор ИИ и доп. рудник

Похожие вопросы:

ответ
PomaH:
Fraps:
Ну так в условия строительства - только лагерь 2(доп лагерь).
И можно ещё поставить при условии, что есть больше 1 ратуши (т.е. 2 лагерь 100% построен).
Мой бот единовременно владеет только 1 рудником. 2 ратуши это решение только для первого экспа, у меня на карте много рудников по небольшому количеству золота, комп должен возле каждого из них обустраивать оборону из вышек.
Только что проверил выставил строить у рудника №2 при условии что есть 2 ратуши, и он гад все равно стоит на главной базе,где рудник уже закончился.
Хм... То есть ты делал башни компу, поставил им место только во 2 лагере... Или у 2 рудника. И только при условии что у него есть 2 ратуши или заняты 2 рудника? Хм... Если он их строит, то он понимает что есть 2 рудника/ратуши, но не понимает где именно 2 рудник находится.

23

» WarCraft 3 / Изменение графики на SD

Похожие вопросы:

ответ
Он кладет это дело в память после preloader`а Можно код изменять напрямую в озу.

23

» WarCraft 3 / Отлавливать урон.

Похожие вопросы:

ответ
Кастовать способности даммиком и отлавливать урон от него.
ответ
всё как сказал Borodach
чтобы такой фигни не было надо запускать таймер на 0 секунд и им восстанавливать здоровье
также при получении урона надо давать скил на +100500 хп а таймером этот скил убирать и устанавливать нужное количество хп
подобных вопросов было дофига и готовых решений как следствие тоже дофига
я вроде тоже как то кидал свою систему обнуления урона
ответ
у меня тут дело в том что герои и так моментально ресаются, но отнимается жизни и они улетают на точку реса, а если сработает крест или реинкарнация юнит никуда не улетает а просто ждёт свой таймер и ресается...А что я собственно говоря туплю, у меня же смерти все триггерные как никак, просто в общем событии не отнимать жизнь если прокнул шанс, и не переносить на стартовую локу, а просто реснуть с задержкой. Спасибо за наводку парни 8gabriel8, pro100master, PT153, Absolute, KingMaximax, ssbbssc, , я понял, что мне нужно сделать
ответ
local DamageTrigger = CreateTrigger()
for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
	TriggerRegisterPlayerUnitEvent(DamageTrigger, Player(i), EVENT_PLAYER_UNIT_DAMAGING) -- до вычета брони
	TriggerRegisterPlayerUnitEvent(DamageTrigger, Player(i), EVENT_PLAYER_UNIT_DAMAGED) -- после вычета брони
end
TriggerAddAction(DamageTrigger, function()
	local damage     = GetEventDamage() -- число урона
	local damageType = BlzGetEventDamageType() -- тип урона
	local target     = GetTriggerUnit() -- тот кто получил урон
	local caster     = GetEventDamageSource() -- тот кто нанёс урон
end)

23

» WarCraft 3 / Щит молний.

Похожие вопросы:

ответ
Можно сделать на основе заклинания Жар Преисподней, но без триггеров тут не обойтись.
ответ
Нет, допустимые цели прописаны в движке игры, делаем триггерный щит молний, благо это очень примитивная способность.
ответ
Еще раз, 'Aams' - щит от магии, он дает маг имун и только. 'Aam2' - нейтрализует урон от магии, при этом в цель можно применять заклинания, обрати внимание там другой бафф.
ответ
Активация либо канал, либо любой скил без цели, и дамми каст щита молний на этого героя.
Может быть получится с руной щита молний, но не факт, надо проверять
ответ
Можно сделать способность, которая убирает пни в некотором радиусе. Вот пример.

23

» WarCraft 3 / черные квадраты

Похожие вопросы:

ответ
Кажется я понял в чем дело. В общем, в карте монолит в импорте файлик LoadingScreen.mdx весит 3 кб, когда я его экспортирую на рабочий стол, а затем импортирую обратно в карту с рабочего стола, то он почему-то начинает весить не 3, а 1 кб, а Лоадскрин не показывается при загрузке карты. Но из-за чего это происходит я не знаю.
ответ
Неполадки исправил удалив папку UI. Графон от плойки исправился внутри игры в настройках - они сбросились.
ответ
8gabriel8, Я полагал, что чёрные - юниты/объекты внутри, а красные - юниты/объекты вокруг, вот собственно его задача была расстановка юнитов/объектов вокруг, но ты прав, нужно больше информации.
ответ
Сделал моделаль, у меня работает. Посмотри может ты что-то сделал не так.
ответ
Думаю ваш друг имеет урезаный варкрафт который подгружает только стандартные а все что новые не отобразит или зеленым

23

» WarCraft 3 / нерабочий триггер

Похожие вопросы:

ответ
Поинт - позиция юнита
Группа - создать группу
Выбрать всех юнитов вокруг героя, добавить в Группу
Инт - количество юнитов в Группе
От 1 до Инт
Цикл:
-Установить Таргет = рандом юнит из группы
-Создать Дамми в Поинт
-Приказать последнему созданному замедление(Альянс) на Таргет
-Добавить таймер последнему созданному 0.50
-Убрать Таргет из Группы
-Установить Таргет = нет б.е.
Очистить Группу
Удалить Поинт
call DestroyGroup(udg_Group)
set udg_Group = null
set udg_Point = null
ответ
тема абилки с зарядами. что-то код с мем хаком плодят разный
я эту фишку тестил. там по факту, значение меняется. Но визуально нет (не отрисовывается).
ответ
8gabriel8,
Если что, скидывай карту.
Беда в том, что эта карта из кампании, там всё очень много весит, потому не буду.
PT153,
ну как там дела?
Пока никак, ибо из-за сессии отложил редактор в сторону (собственно, даже сюда времени зайти не было, к сожалению)
Рад, что ты предложил выход, но я, боюсь, твой код себе никак не перенесу, ибо, как писал в вопросе, лишь на GUI могу работать.
8gabriel8,
мне кажется, проблема не в этом триггере, а в другом, который запускает триггеры и таймеры.
Триггер, запускающий таймер, вряд ли многое испортить может
Мдаааа... Я свою ошибку таки нашёл. Она была в самом тупом месте из всех возможных.
Я действительно не понимаю, это у меня голова не работает совершенно, или в редакторе какие-то баги
Цитата из вопроса, у меня не работает голова.
Так вот, это я дурак полный.
Запихнул обнуление своей переменной ВНИМАНИЕ! в триггер, который игрокам-компьютерам каждые 2 секунды обновляет ресурсы. А вместе с этим и обнуляет снова и снова мою переменную. Обнаружил ли я это через дебаги? Нет, просто от скуки и безнадёжности положения начал прокручивать и листать все триггеры.
Спасибо всем, кто пытался помочь, это было очень приятно) Мне жаль, что вы ломали голову и тратили время впустую по моей глупости и невнимательности.
ответ
quq_CCCP:
Ну хоть сделал бы нормальное условие, это кривое + плодит утечки, лучше использовать event units in range или Unit enters in region.
А какие утечки он плодит?
Решил эту проблему таким способом:
А именно: Если на слоте игрока есть игрок, то проверяются наличие его юнитов в зоне ворот, если же на слоте нет игрока, то условие игнорируется.
ответ
Так тебе вджасс нужен)


Вджасс это дополнение к обычному джассу, у себя ты можешь видеть строки объявления библиотеки, продвинутые комментарии и статические константные переменные


23

» WarCraft 3 / Нужно определить угол

Похожие вопросы:

ответ
Проверка угла между углом поворота юнита facing angle и угла между координатами. У бриста довольно примитивно сделана пассивка, опен доту глянь.
ответ
Всё, разобрался, вопрос снимаю)
ответ
Примерно так получилось
function Trig_CW_Cast_Actions takes nothing returns nothing
    local unit u    = LoadUnitHandle( какая_нибудь_хештаблица, GetHandleId(GetExpiredTimer()), 0 )
    local real x1   = GetUnitX( u ) //координаты кастера
    local real y1   = GetUnitY( u )
    local real from = 800
    local real a    = GetUnitFacing( u ) //угол поворота юнита
    //local real S = 90 //Ширина угла
    //local real angle = S/2 //Половина ширины угла

    set udg_Angle = a
    set udg_Caster = u
    //set udg_X = angle

    call BJDebugMsg("Угол поворота при касте: "+ R2S(a))

    call GroupEnumUnitsInRange(bj_lastCreatedGroup,x1,y1,from, Condition(function TZZ))
    //call ForGroup( bj_lastCreatedGroup, function TZZ )
    call GroupClear(bj_lastCreatedGroup)
    
    set u = null
endfunction

function TimerOff takes nothing returns nothing
    local timer t  = GetExpiredTimer()
    local timer t2 = LoadTimerHandle( какая_нибудь_хештаблица, GetHandleId(t), 0 )
    
    call FlushChildHashtable( какая_нибудь_хештаблица, GetHandleId(t)  )
    call FlushChildHashtable( какая_нибудь_хештаблица, GetHandleId(t2) )
    call DestroyTimer( t  )
    call DestroyTimer( t2 )
    
    set t  = null
    set t2 = null
endfunction

function Timer takes nothing returns nothing
    local timer t  = CreateTimer()
    local timer t2 = CreateTimer()
    local unit  u  = GetTriggerUnit()
    
    call SaveUnitHandle( какая_нибудь_хештаблица, GetHandleId( t ), 0, u )
    call TimerStart( t, /*Периодичность*/0.04, true, Trig_CW_Cast_Actions )
    
    call SaveTimerHandle( какая_нибудь_хештаблица, GetHandleId(t2), 0, t )
    call TimerStart( t2, /*Время которое будет работать таймер*/36, false, TimerOff )
    
    set t  = null
    set t2 = null
    set u  = null
endfunction

//===========================================================================
function InitTrig_Cast takes nothing returns nothing
    set gg_trg_Cast = CreateTrigger(  )
    set bj_lastCreatedGroup = CreateGroup()
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Cast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Cast, Condition( function Trig_CW_Cast_Conditions ) )
    call TriggerAddAction( gg_trg_Cast, function Timer )
endfunction
ответ
Неразрушаемые декорации очень геморройны, особенно отсутствие многих триггеров в разделе animation. Уж лучше браться за изменение через РО/макс. угол поворота или же макс. угол крена, а затем скрыть декорацию и показать только в нужное для игрока, время
ответ
Равно в варике округляет, а вот неравно - нет. У тебя и выводит 90.000, потому что R2S округляет до 3-го знака, а на самом деле там было что-то вроде 89.999999. 90 != 89.999999 в варике, потому условие прошло. Хочешь, чтобы не прошло, используй not (90 == angle). Тогда 89.999999 округлится до 90 и условие не пройдёт.

Либо используй то, что показал Скорп, тоже подойдёт.

23

» WarCraft 3 / Модель

Похожие вопросы:

ответ
Поиск по сайту, если не нашлось, сперва сюда:
Потом сюда:

В следующий раз за такие темы будут варны.
ответ
~8gabriel8:
Пересчитай границы, если не поможет, то приложи модель.
ответ
В 2 местах у разрушаемого объекта надо ставить модель импортированную.
ответ
Shakral, вот.

23

» WarCraft 3 / Анимация атаки.

Похожие вопросы:

ответ
Создаешь 2 модельки, у одной анимация стрельбы, у другой удара штыком. За тем создаешь 2 юнитов с разными модельками и при смене режима (на базе любого метамарфоза) меняешь юнита.
Все анимации атаки вписанные в юнита будут задействованы рандомно, даже если прикажешь триггером использовать конкретную анимку. Дабы избежать этого, нужно использовать лишь одну анимацию атаки.
ответ
8gabriel8:
Вроде ему наоборот надо Spell Throw -> Attack.
с Attack на Spell Throw

zetreisu, открываете модель в mdlvis жмакаете F3, выбераете нужную анимацию, переименовываете, жмакаете Enter и сохраняете модель при выходе.
ответ
XGM Bot:
Похожие вопросы:

ответ
тогда лучше всего удалить анимацию, наименее костыльный метод
ответ
8gabriel8:
Вроде ему наоборот надо Spell Throw -> Attack.
с Attack на Spell Throw

zetreisu, открываете модель в mdlvis жмакаете F3, выбераете нужную анимацию, переименовываете, жмакаете Enter и сохраняете модель при выходе.

ответ
SetUnitAnimationByIndex( whichUnit, index )
whichUnit - ваш юнит
index - необходимый индекс

23

» WarCraft 3 / Как работают триггеры?

Похожие вопросы:

ответ
prog помог в личке в Дискорде, вот решение
Решение
do
  local f = InitGlobals -- записываем InitGlobals в переменную
  function InitGlobals() -- заменяем оригинальную InitGlobals своей
       f() -- вызываем оригинальную InitGlobals из переменной
       InitMyTrigger()
  end

end

function InitMyTrigger()
   
 local SpellTrigger = CreateTrigger()
    for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
        local player = Player(i)
        TriggerRegisterPlayerUnitEvent(SpellTrigger, player, EVENT_PLAYER_UNIT_SPELL_CAST)
    end
    TriggerAddAction(SpellTrigger, function()
        local eventId          = GetHandleId(GetTriggerEventId())
        local caster           = GetTriggerUnit()
        local casterX, casterY = GetUnitX(caster), GetUnitY(caster)
        local spellId          = GetSpellAbilityId()
--        local spellX, spellY   = GetSpellTargetX(), GetSpellTargetY()
        if spellId == FourCC('A000') then -- Призыв
            print("призыв")
            local newu = CreateUnit(GetOwningPlayer(caster), FourCC('h000'), casterX, casterY, GetUnitFacing(caster))
        end
    end)
end
ответ
RobertStevenson, вейты вообще зло, а отсчёт можно сделать таймером. Точнее и без неожиданных багов.
Ждать пока - это вейт в цикле, работает это просто отвратно, сам с этим сталкивался. Лучше заменить на событие смерти колдуна.

Я всё же думаю, что дело не в вейтах. Выводи имя героя Hero[A]. Лучше выводить так: ("герой - ") + (Имя юнита (Hero[A])) + " " + (Число в строку (А)).
Если нет имени - героя просто нет в этой переменной.
ответ
Вставь этот русификатор, он и в джнгп работает норм
ответ
Уже дошел методом тыка, нужно было использовать triggering unit. Мда.

23

» WarCraft 3 / Триггерный урон от способности

Похожие вопросы:

ответ
юнит получает урон
1 ответ на 2 вопроса
ответ
Наименее ресурсозатратным для игрового процесса будет кастовать саму волну через отдельного дамми, который создаётся специально и только для волны силы. Сама волна наносит 1 ед урона. И потом определив, тип юнит-источника урона - наносим нужный урон от лица героя-хозяина юнита "волна силы".
В варианте "чекать группы каждые 0.0х сек" будет засоряться память и скорее всего будут подлагивания, в варианте со спец-дамиками засорится РО, выбирай из двух зол.
ответ
Astra, очень багано
так как после последней атаки может многое изменится
так же урон при событие юнит получает урон зависит от брони и прочих резистов
если юнит с уроном 100 нанёс удар по врагу с физ резистом 50% а потом получил бафф/предмет на +100 урона то скилом нанесёт 50 урона хотя должен был бы нанести 200
тут нужно юзать бд
при касте скила брать из бд начальный урон юнита, бонусы предметов и бонусы всех бафов
тема кстати уже много раз поднималась
и каждый раз все заканчивалось тем что афтар забивал на подобную систему либо писал "вы все нубы/тролли и не знаете/не хотите сказать как сделать это легко и просто"
ибо подобная система требует кучи кода и как минимум 30 прочтённых статей по jass
вот статья о бд
ответ
Yonsen, обычно юзают предметную способность "запас здоровья" до 999999к хп. Обычно на все случаи жизни, любимый метод. Даем ее в момент нанесения урона. Когда срабатывает событие "юнит получает", то в этот момент урон еще не произошел, нам как бы оповешают, что он будет через 0.00 сек. Получает пассивку и через 0.00 сек урон. Потом хилим. И удаляем способность. Все.
ответ
~8gabriel8:
Ещё можешь наносить вместо отравления иной бафф, а отравлять даммиком. По этому баффу сможешь различать урон от автоатаки и способности.

23

» WarCraft 3 / Инком от маны

Похожие вопросы:

ответ
Сохраняй и меняй через таймер с временем 0.00 сек.
ответ
А еще лучше можно жаровню илидана заюзать для сжигания маны и срабатывания событий, которые вызываются при включении и выключении этой горелки. Причем она еще и сама автоматически выключится, когда закончится мана.
ответ
  1. Есть функция проверки кол-ва ловкости героя, при этом можно посмотреть сколько ловкости от характеристик и сколько от предметов, исходя из кол-ва ловкости вручать предметные абилки на атаку.
  2. Самое простое - апгрейды, триггерно повышать уровень улучшения которое будет действовать на героя, увы это не идеальный вариант, но один из самых просты. Так же вручать способности предметов на регенерацию здоровья \ маны.
  3. Напрямую - никак, есть место только под 5 способностей. Делать свою систему прокачки способностей из спеллбука или какие либо еще способы, на подобии рпгшных карт.
ответ
TeX13, подмена абилок? удаляешь одну даешь другую
ответ
Макс мана - Мана